"""
Created on 2024-04-25 12:21:02
---------
@summary: 爬虫入口
---------
@author: Alex
"""

from feapder import ArgumentParser
from spiders.amazon.amazon_spider_category import AmazonCategorySpider
from spiders.amazon.amazon_spider_detail import AmazonDetailSpider
from datetime import datetime
from feapder.utils import tools

def crawl_category_test():
    """
    amazon榜单爬虫
    """
    task_table = "amazon_task_seeds_category"
    # spider = AmazonCategorySpider(

    #     task_table=task_table,  # mysql中的任务表
    #     batch_record_table=f"{task_table}_record",  # mysql中的批次记录表
    #     batch_name=datetime.now().date(),  # 批次名字
    #     batch_interval=1,  # 批次时间 天为单位 若为小时 可写 1 / 24
    #     task_keys=["id", "cate_source","url"],  # 需要获取任务表里的字段名，可添加多个
    #     redis_key="spider:amazon:category",  # redis中存放request等信息的根key
    #     task_state="state",  # mysql中任务状态字段
    #     save_to_db=True,
    #     SPIDER_MAX_RETRY_TIMES=1
    # )
    # spider.start_monitor_task()
    spider = AmazonCategorySpider.to_DebugBatchSpider(
        task_id=3,
        task_table=task_table,  # mysql中的任务表
        batch_record_table=f"{task_table}_record",  # mysql中的批次记录表
        batch_name=datetime.now().date(),  # 批次名字
        batch_interval=1,  # 批次时间 天为单位 若为小时 可写 1 / 24
        task_keys=["id", "cate_source", "url"],  # 需要获取任务表里的字段名，可添加多个
        redis_key="spider:amazon:category",  # redis中存放request等信息的根key
        task_state="state",  # mysql中任务状态字段
        save_to_db=True,
        SPIDER_MAX_RETRY_TIMES=1
    )
    spider.start()


def crawl_detail_test():
    """
    BatchSpider爬虫
    """
    task_table = "amazon_task_seeds"
    url = "https://www.amazon.com/dp/B00DTOX9A2/?th=1"
    id = 1417
    asin = tools.re.findall('/dp/(.*?)/',url)[0]
    cid = '666666666666664'
    task = id, asin, cid
    spider = AmazonDetailSpider.to_DebugBatchSpider(
        # task_id=1417,
        task=task,
        task_table=task_table,  # mysql中的任务表
        batch_record_table=f"{task_table}_record",  # mysql中的批次记录表
        batch_name=datetime.now().date(),  # 批次名字
        batch_interval=1,  # 批次时间 天为单位 若为小时 可写 1 / 24
        task_keys=["id", "asin", "cid"],  # 需要获取任务表里的字段名，可添加多个
        redis_key="spider:amazon:detail",  # redis中存放request等信息的根key
        task_state="state",  # mysql中任务状态字段
        save_to_db=True,
        SPIDER_MAX_RETRY_TIMES=1,
        SAVE_FAILED_REQUEST=True
    )  # request=feapder.Request("http://www.baidu.com")

    spider.start()


if __name__ == "__main__":
    # crawl_category_test()
    crawl_detail_test()
    parser = ArgumentParser(description="amazon 爬虫")

    parser.add_argument(
        "--crawl_category", action="store_true", help="amazon榜单爬虫", function=crawl_category_test
    )
    parser.add_argument(
        "--crawl_detail", action="store_true", help="amazon榜单爬虫", function=crawl_detail_test
    )